#ifndef BUILDER_H
#define BUILDER_H
#include <QString>
class Product;
class Builder
{
public:
    virtual ~Builder();
    virtual void BuildPartA(const QString buildPara) = 0;
    virtual void BuildPartB(const QString buildPara) = 0;
    virtual void BuildPartC(const QString buildPara) = 0;
    virtual Product* GetProduct() = 0;
protected:
    Builder();
};

class ConcreteBuilder: public Builder
{
public:
    ConcreteBuilder();
    ~ConcreteBuilder();
    void BuildPartA(const QString buildPara);
    void BuildPartB(const QString buildPara);
    void BuildPartC(const QString buildPara);
    Product* GetProduct();

private:
    Product * _product;
};

#endif // BUILDER_H
